e597c5
@@ -19,8 +19,6 @@
package org.springframework.amqp.rabbit.connection;
 import java.io.IOException;
 
 import org.springframework.amqp.AmqpIOException;
-import org.springframework.transaction.NoTransactionException;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.transaction.support.ResourceHolderSynchronization;
 import org.springframework.transaction.support.TransactionSynchronization;
 import org.springframework.transaction.support.TransactionSynchronizationManager;
@@ -78,13 +76,13 @@
public final class ConnectionFactoryUtils {
 		return doGetTransactionalResourceHolder(connectionFactory, new ResourceFactory() {
 
 			@Override
-			public Channel getChannel(RabbitResourceHolder holder1) {
-				return holder1.getChannel();
+			public Channel getChannel(RabbitResourceHolder holder) {
+				return holder.getChannel();
 			}
 
 			@Override
-			public Connection getConnection(RabbitResourceHolder holder1) {
-				return holder1.getConnection();
+			public Connection getConnection(RabbitResourceHolder holder) {
+				return holder.getConnection();
 			}
 
 			@Override
@@ -156,7 +154,6 @@
public final class ConnectionFactoryUtils {
 
 		}
 		catch (IOException ex) {
-			RabbitUtils.closeChannel(channel); //NOSONAR
 			RabbitUtils.closeConnection(connection);
 			throw new AmqpIOException(ex);
 		}
@@ -179,16 +176,8 @@
public final class ConnectionFactoryUtils {
 		TransactionSynchronizationManager.bindResource(connectionFactory, resourceHolder);
 		resourceHolder.setSynchronizedWithTransaction(true);
 		if (TransactionSynchronizationManager.isSynchronizationActive()) {
-			boolean locallyTransacted = true;
-			try {
-				locallyTransacted = TransactionAspectSupport.currentTransactionStatus().isNewTransaction();
-			}
-			catch (NoTransactionException e) {
-				// Ignore in favor of 'synched' flag before.
-			}
-
 			TransactionSynchronizationManager.registerSynchronization(new RabbitResourceSynchronization(resourceHolder,
-					connectionFactory, locallyTransacted));
+					connectionFactory));
 		}
 	}
 
@@ -257,15 +246,11 @@
public final class ConnectionFactoryUtils {
 	private static final class RabbitResourceSynchronization extends
 			ResourceHolderSynchronization<RabbitResourceHolder, Object> {
 
-		private final boolean locallyTransacted;
-
 		private final RabbitResourceHolder resourceHolder;
 
-		private RabbitResourceSynchronization(RabbitResourceHolder resourceHolder, Object resourceKey,
-		                                     boolean locallyTransacted) {
+		private RabbitResourceSynchronization(RabbitResourceHolder resourceHolder, Object resourceKey) {
 			super(resourceHolder, resourceKey);
 			this.resourceHolder = resourceHolder;
-			this.locallyTransacted = locallyTransacted;
 		}
 
 		@Override
@@ -273,26 +258,15 @@
public final class ConnectionFactoryUtils {
 			return false;
 		}
 
-		@Override
-		public void afterCommit() {
-			if (this.locallyTransacted) {
-				processResourceAfterCommit(this.resourceHolder);
-			}
-		}
-
-		@Override
-		protected void processResourceAfterCommit(RabbitResourceHolder resourceHolder) {
-			resourceHolder.commitAll();
-		}
-
 		@Override
 		public void afterCompletion(int status) {
-			if (status != TransactionSynchronization.STATUS_COMMITTED) {
-				this.resourceHolder.rollbackAll();
-			}
-			else if (!this.locallyTransacted) {
+			if (status == TransactionSynchronization.STATUS_COMMITTED) {
 				this.resourceHolder.commitAll();
 			}
+			else {
+				this.resourceHolder.rollbackAll();
+			}
+
 			if (this.resourceHolder.isReleaseAfterCompletion()) {
 				this.resourceHolder.setSynchronizedWithTransaction(false);
 			}
